git refs,branch 跟 tag是一樣的

前言

正文

git的主要架構其實都圍繞着 refs ,
branch 跟 tag 其實是一樣的東西,
直接去看 .git的資料夾,可以看到下面的架構。

	tree .git/refs

├── heads
│   ├── apm2
│   └── testapmlog
├── remotes
│   └── origin
│   ├── HEAD
│   ├── apm2
│   ├── dev_spring20211027
└── tags

heads 目錄,描述在本機上的所有分支,每一個檔案對應相應的目錄。
開啟檔案的話,會看到一個commit的雜湊值,
而不管是branch 或 tag 都是根據此雜湊值,來決定你程式目前是哪個版本。

cat .git/refs/heads/apm2

git log -1 apm2 
or
git show apm2

這兩個的雜湊值會一樣,
所以建立一個新的分支,對git來說,也只是將當下的雜湊值寫到一個檔案內。

ref.